package com.doctor.windflower_doctor.activity;

import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;

import com.doctor.windflower_doctor.R;
import com.doctor.windflower_doctor.util.ActivityStack;
import com.umeng.analytics.MobclickAgent;

/**
 * <p>
 * 功能 activity底层实现类
 * </p>
 * 
 * <p>
 * Copyright 北京亚普拓信息咨询服务有限公司 2014 All right reserved.
 * </p>
 * 
 * @author 皮勉 时间 2014年9月25日 上午11:39:41
 * @version 1.0 </br> 最后修改人 无
 */
public abstract class BaseActivity extends FragmentActivity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		ActivityStack.getInstance().addActivity(this);
		int resLayoutId = getResLayoutId();
		if (resLayoutId == -1) {
			View view = getResLayoutView();
			if (view == null) {
				throw new RuntimeException("getResLayoutId返回-1的情况下getResLayoutView不能返回null");
			}
			setContentView(view);
		} else {
			setContentView(resLayoutId);
		}
		getSaveData(savedInstanceState);
		findViews();
		setListener();
		processLogic();

	}

	/**
	 * 
	 * <p>
	 * 功能 获取界面销毁时保存的数据
	 * </p>
	 * 
	 * @author 何自飞 时间 2014年3月11日 上午9:41:34
	 * @param savedInstanceState
	 */
	protected abstract void getSaveData(Bundle savedInstanceState);

	/**
	 * 
	 * <p>
	 * 功能 处理业务逻辑
	 * </p>
	 * 
	 * @author 何自飞 时间 2014年3月11日 上午9:41:56
	 */
	protected abstract void processLogic();

	/**
	 * 
	 * <p>
	 * 功能 为控件设置监听事件
	 * </p>
	 * 
	 * @author 何自飞 时间 2014年3月11日 上午9:42:07
	 */
	protected abstract void setListener();

	/**
	 * 
	 * <p>
	 * 功能 获取界面所需要的控件
	 * </p>
	 * 
	 * @author 何自飞 时间 2014年3月11日 上午9:42:25
	 */
	protected abstract void findViews();

	/**
	 * 只有getResLayoutId返回-1该方法才起做用
	 * 
	 * @return
	 */
	protected View getResLayoutView() {
		return null;
	}

	/**
	 * 如果是XML文件的话在这里返回ID如果是View对象的话返回-1 从写getResLayoutView方法
	 * 
	 * @return
	 */
	public abstract int getResLayoutId();

	@Override
	protected void onDestroy() {
		ActivityStack.getInstance().removeActivity(this);
		super.onDestroy();
	}

	@Override
	public void startActivity(Intent intent) {
		super.startActivity(intent);
		boolean animition = intent.getBooleanExtra("animition", true);
		if (animition) {
			overridePendingTransition(R.anim.tran_start_act_in, R.anim.tran_start_act_out);
		}
	}

	@Override
	public void finish() {
		super.finish();
		boolean animition = getIntent().getBooleanExtra("animition", true);
		if (animition) {
			overridePendingTransition(R.anim.tran_finish_act_in, R.anim.tran_finish_act_out);
		}
	}

	@Override
	public void onConfigurationChanged(Configuration newConfig) {
		super.onConfigurationChanged(newConfig);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * android.support.v4.app.FragmentActivity#startActivityForResult(android
	 * .content.Intent, int)
	 */
	@Override
	public void startActivityForResult(Intent intent, int requestCode) {

		super.startActivityForResult(intent, requestCode);
		boolean animition = intent.getBooleanExtra("animition", true);
		if (animition) {
			overridePendingTransition(R.anim.tran_start_act_in, R.anim.tran_start_act_out);
		}

	}

	@Override
	protected void onPause() {
		super.onPause();
		MobclickAgent.onPause(this);
		MobclickAgent.onPageEnd("SplashScreen");
	}

	@Override
	protected void onStart() {

		super.onStart();

	}

	@Override
	protected void onStop() {
		super.onStop();

	}

	@Override
	protected void onResume() {
		
		
		MobclickAgent.onResume(this);
		MobclickAgent.onPageStart("SplashScreen");
		super.onResume();
		
	}
}
